package com.project.mapper;


import com.project.bean.ShopCarBean;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * 购物车业务成接口
 */
public interface IShopCarMapper {


    /**
     * 判断指定用户指定商品，在购物车中是否存在否存在于数据库，
     * @param userId        用户id
     * @param productId       商品id
     * @param数量
     */
    @Select("select count(pk_shopId) from t_shopCar  where fk_shopUserId=#{userId} and fk_shopProductId=#{productId}")
    @ResultType(int.class)
    public int hasUserShop(@Param("userId") int userId, @Param("productId") int productId);


    /**
     * 向购物车中添加商品
     * @param userId        用户id
     * @param productId     商品id
     * @param num           购买数量
     */
    @Insert("INSERT INTO t_shopCar(fk_shopUserId,fk_shopProductId,s_shopNum)VALUES(#{userId},#{productId},#{num})")
    public void addShop(@Param("userId")int userId, @Param("productId")int  productId,@Param("num") int num);


    /**
     * 购物车商品添加
     * @param userId    购物车id
     * @param num   累加数量  默认为1
     */
    @Update("update t_shopCar set s_shopNum=s_shopNum+#{num} where pk_shopId=#{userId} ")
    public void addDeShop(@Param("userId") int userId,@Param("productId") int productId,@Param("num") int num);



    /**
     * 修改购物车数量
     * @param id    购物车id
     * @param num   数量
     */
    @Update("update t_shopCar set s_shopNum=#{num} where pk_shopId=#{id}")
    public void updateNum(@Param("id") int id, @Param("num") int num);

    /**+
     * 移除购物车商品
     * @param id       明细id
     */
    @Delete("delete from t_shopCar where pk_shopId=#{id}")
    public void del(int id);


    /**
     * 查询指定用户商品购物车
     * @param userId        用户id
     * @return              购物车集合
     */
    @Select("SELECT  p.*,s.s_shopNum, s.pk_shopId FROM  t_shopCar s,t_product p WHERE s.`fk_shopProductId`=p.`pk_productId` AND s.`fk_shopUserId`=#{userId};")
    @ResultMap("shopMap")
    public List<ShopCarBean>findByUser(int userId);


    /**
     * 删除指定用户的购物车集合
     * @param userId    用户id
     */
    @Delete("delete from t_shopCar where fk_shopUserId=#{userId}")
    public void delByUser(int userId);
}
